<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
//Route::middleware('auth:api')->get('/user', function (Request $request) {
//    return $request->user();
//});
//使用了DingoApi

$api = app('Dingo\Api\Routing\Router');


$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
    'middleware' => ['serializer:array','bindings',],
],
    //api.throttle  发送频率限制
    function($api) {
        $api->group([
            'middleware' => 'api.throttle',
            'limit' => config('api.rate_limits.sign.limit'),
            'expires' => config('api.rate_limits.sign.expires'),
        ], function ($api) {
            //短信验证码
            $api->post('verificationCodes', 'VerificationCodesController@store')->name('api.verificationCodes.store');
            //用户注册
            $api->post('users', 'UsersController@store')->name('api.users.store');
            //用户填写图片验证码后执行发送验证码
            $api->post('captchas', 'CaptchasController@store')->name('api.captchas.store');

            //第三方登录
            $api->post('socials/{social_type}/authorizations', 'AuthorizationsController@socialStore')->name('api.socials.authorizations.store');
            //登录
            $api->post('authorizations', 'AuthorizationsController@store')->name('api.authorizations.store');

            // 刷新token    过期操作
            $api->put('authorizations/current', 'AuthorizationsController@update')->name('api.authorizations.update');
            // 删除token  退出操作
            $api->delete('authorizations/current', 'AuthorizationsController@destroy')->name('api.authorizations.destroy');
        });

        $api->group([
            'middleware' => 'api.throttle',
            'limit' => config('api.rate_limits.sign.limit'),
            'expires' => config('api.rate_limits.sign.expires'),

        ],function ($api){
            // 游客可以访问的接口
            $api->get('products', 'ProductsController@index')->name('api.products.index');


            $api->get('products/{product}', 'ProductsController@show')->name('api.products.show')->where(['product' => '[0-9]+']);


            //需要token验证的接口
            $api->group(['middleware' => 'api.auth'], function($api){
                //当前登录用户的信息
                $api->get('user', 'UsersController@me')->name('api.user.show');
                //图片资源
                $api->post('images','ImagesController@store')->name('api.images.store');
                //编辑用户信息的接口
                $api->patch('user', 'UsersController@update')->name('api.user.update');

                //商品收藏
                $api->post('products/{product}/favorite', 'ProductsController@favor')->name('api.products.favor');
                //取消收藏
                $api->delete('products/{product}/favorite', 'ProductsController@disfavor')->name('api.products.disfavor');
                //收藏列表
                $api->get('products/favorites', 'ProductsController@favorites')->name('api.products.favorites');
                //购物车展示页面
                $api->get('cart','CartController@index')->name('api.cart.index');

                //获取用户的订单列表页信息
                $api->get('orders', 'OrdersController@index')->name('api.orders.index');
                //订单详情页面
                $api->get('orders/{order}', 'OrdersController@show')->name('api.orders.show');


            });

        });

});


$api->version('v2', function($api) {
    $api->get('version', function() {
        return response('this is version v2');
    });
});